/**
 * @copyright Copyright (c) 2025 
 * CSG Digital Grid Technology (Guangdong) Co., Ltd.
 * @author xxxcsg
 * @brief JSON 字符串转 TXT 文件工具函数
 * @details 解析输入的 JSON 字符串，将其键值对按指定格式写入本地 TXT 文件，核心功能如下：
 *          1. JSON 解析：通过 cJSON 库解析输入的 JSON 字符串，支持 String/Number/True/False 四种数据类型
 *          2. 文件写入：将解析后的键值对写入 /userdata/sysphinfo.txt 文件（覆盖写模式），格式为「键=值」
 *          3. 类型适配：String 类型直接写入字符串值，Number 类型写入整数，True 映射为 1，False 映射为 0
 * @note 1. 依赖组件：cJSON 库（JSON 解析）、标准 C 库（文件操作）
 *       2. 输出路径：文件固定写入 /userdata/sysphinfo.txt，若文件不存在则创建，存在则覆盖原有内容
 *       3. 支持类型：仅处理 JSON 一级键值对（不支持嵌套结构），未支持的类型（如对象、数组等）会忽略
 * @attention 1. 需确保目标设备 /userdata 目录具备读写权限，否则文件创建/写入会失败
 *            2. 输入 JSON 字符串需格式合法，否则解析失败不会写入任何数据
 *            3. 函数未做输入参数校验（json_str 为 NULL 时 cJSON_Parse 会返回 NULL，避免崩溃）
 */
#include "jsontotxtfile.h"


void parse_to_txtfile(const char* json_str) {
    cJSON* root = cJSON_Parse(json_str);
    FILE* fp = fopen("/userdata/sysphinfo.txt", "w");
    
    if (fp && root) {
        cJSON* item = root->child;
        while (item) {
            if (item->type == cJSON_String) {
                //fprintf(fp, "%s=%s\n", item->name, item->valuestring);
                fprintf(fp, "%s=%s\n", item->string, item->valuestring);
            } else if (item->type == cJSON_Number) {
                //fprintf(fp, "%s=%d\n", item->name, item->valueint);
                fprintf(fp, "%s=%d\n", item->string, item->valueint);
            } else if (item->type == cJSON_False) {
                fprintf(fp, "%s=0\n", item->string); /* cJSON_TRUE输出1，cJSON_False输出0 */
            } else if (item->type == cJSON_True) {
                fprintf(fp, "%s=1\n", item->string);
            }
            item = item->next;
        }
    }
    
    cJSON_Delete(root);
    fclose(fp);
}

